﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Biblioteca.Models;
using System.Data;
using Biblioteca.Interfaces;
namespace Biblioteca.Controllers
{
    public class devolucionController : Controller
    {
        BibliotecaStore db;
        private ICuentaUsuario CuentaRepo;
        private IPrestamo PrestamoRepo;
        private IEjemplar ejemplarRepo;

        public devolucionController(ICuentaUsuario cr,IPrestamo pr,IEjemplar er, BibliotecaStore data)
        {
            this.CuentaRepo = cr;
            this.PrestamoRepo = pr;
            this.ejemplarRepo = er;
            this.db = data;
        }
        //
        // GET: /devolucion/

        public ActionResult Index()
        {
            ViewBag.Socios = new SelectList(CuentaRepo.getUsuariosConditional(), "idCuenta", "Usuario");
            return View();
        }
        public ActionResult find(FormCollection form)
        {
            //obtengo el id de la cuenta
            int idcuenta = int.Parse(form.Get("Socios"));
            //obtengo el usuario asociado a la cuenta
            int idUsuario = CuentaRepo.getID(idcuenta);
            //busco los prestamos pendientes del usuario
            var activos = PrestamoRepo.getPrestamosActivosUsuario(idUsuario);
            return View(activos);
        }
        /**
         * id representa el identificador del prestamo
         * */
        public ActionResult devolver(int id)
        {
            //obtengo el Prestamo
            Prestamo p = PrestamoRepo.getSigle(id);
            //obtengo el ejemplar prestado
            Ejemplar e = p.Ejemplar1;
            //actualizo los modelos
            p.DevolucionEfectiva = DateTime.Today;
            e.Disponible = 1;
            //guardo en la base de datos
            PrestamoRepo.modificarPrestamo(p);
            ejemplarRepo.modificarEjemplar(e);
            //actualizo la vista
            var activos = PrestamoRepo.getPrestamosActivosUsuario(p.Usuario);
            return View("find",activos);
        }
        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }

    }
}
